- swift在赋值时,自动根据值的类型指定变量或常量的类型。
var num = 3; let pi = 3.14
- 判断字符串是否为空:
string = ""
string.isEmpty
return true
- 多行字符串,用三个双引号独占一行表示开始,最后三个双引号结束。结束三个双引号最左边的列是起始列,在此基础上的缩紧才是有效的。
- list.firstIndex(of:str) 返回 str对应在list中首次出现的index
- list字符串提取
运算符 |
含义 |
示例 |
结果 |
解释 |
..< |
不包含右边界(开区间) |
"Hello"[...<3] |
"Hel" |
从字符串的开头到索引3之前的部分,不包括索引3的字符。 |
... |
包含右边界(闭区间) |
"Hello"[...3] |
"Hell" |
从字符串的开头到索引3的部分,包括索引3的字符。 |
- swift采用可变长度编码字符串,不同字符的内存占用不同。如果用整数索引string[0],那么swift不知道访问的是哪个字符,当索引落在某个字符串表示的中间时。Python 通过 隐藏底层编码复杂性,让字符串索引更加直观,而 Swift 则暴露了字符串的底层存储细节,让开发者必须考虑字符边界。
"a"
在 UTF-8 中占 1 个字节
"é"
在 UTF-8 中占 2 个字节
"💡"
在 UTF-8 中占 4 个字节
因此,Swift 通过 String.Index
维护索引,使其自动指向字符边界,确保 不会意外访问无效的内存位置。
import Foundation
var test_string = "Hello, Swift"
// 1.先获取字符所在的索引:获取第二个字符的索引(从 startIndex 偏移 1 个字符)
let index = test_string.index(test_string.startIndex, offsetBy: 1)
// 2.通过索引访问字符
let character = test_string[index]
print(character) // 输出: e
- 在 Swift 中,
str.endIndex
不是 指向最后一个字符的 index
,而是指向字符串末尾的索引(超出最后一个字符的位置)。str.startIndex指向第一个字符串,offset=0。
print(str[str.endIndex]) // ❌ 运行时错误:索引超出范围
print(str[..<str.endIndex]) // ✅ 运行时正确,开区间避免取endIndex
print(str[str.startIndex...str.index(before: str.endIndex)]) // ✅ 正确
Index table
H |
e |
l |
l |
o |
|
0 |
1 |
2 |
3 |
4 |
5 |
startIndex |
offset=1 |
offset=2 |
offset=3 |
offset=4 |
endIndex |
- 字符串使用append和 str1 + str2 拼接字符串
- swift 默认小数为双精度浮点数
- tuple用圆括号存储数据,为一种数据结构。